package com.shujia.duotai.type_transfer;

import org.junit.Test;

public class PersonTest {

    @Test
    public void test1() {
        /*
        new 数据类型和强转的数据类型要保持一致
         */
        Person person = new Student();// ClassCastException
        // 可以编译通过, 在运行的时候才会报错
        Teacher teacher = (Teacher) person;

        /*
        编译不通过
        如果实例和类型和强转的类型不具备继承关系, 编译失败
         */
        // Waiter waiter = (Waiter) person;
    }

    public static void main(String[] args) {
        // 多态其实就是引用类型自动转换的应用场景
        Person person = new Student();
        //
        /*
        多态只能调用父类的属性和方法
        如果想要调用子类特有属性和方法, 此时需要用到引用类型的强制转换
         */
        Student student = (Student) person;
        student.stuNo = "123";
        System.out.println(student.stuNo);
        student.study();
    }
}
